To reduce energy consumption, computing devices support sleep mode in which they consume less power than in active modes of operation. When a computing device is not actively in use, a power management system on the device may transition to a sleep mode by turning off components of the device. In sleep mode, the computing device cannot respond to user inputs. To support response to user inputs, some components of the computing device stay active to monitor input devices. When a user input is detected, those components can trigger the computing device to transition back to an active mode of operation for response to the user input.
A device connected to a network that is in sleep mode similarly cannot respond to requests directed to the device over the network. The computing device may support a Wake-on-LAN (WoL) mechanism that monitors messages received over the network. When the WoL mechanism detects a message directed to the computing device, it may wake up the computing device. The computing device can then respond to a request for information or other command in the received message.
WoL functionality is implemented using hardware components on a network interface card in the computing device. Circuitry on the network interface card that may detect messages addressed to the computing device may stay powered on, even when the computing device is in a sleep mode. That circuitry, upon detecting a message directed to the computing device, may assert a hardware signal line that triggers the processor or other components of the computing device to wake up to process the packet.
In some cases, the network interface card may contain circuitry implementing essentially all the functionality of a network stack. In this scenario, the network interface card itself may process received messages without waking other components of the computing device. However, offload of a network stack has not been widely implemented in network interface cards because of the cost and complexity of designing and manufacturing such network interface cards and integrating them into a computing system.